With development of office automation in recent years, various versions of multiple programs are installed on computers in companies. In addition, cloud computing has been developed. Therefore, it becomes very important to manage software installed on multiple machines, regardless of a physical machine or a virtual machine, for stable operations of the machines.
A number of pieces of software existing on the machines need to be updated regularly and on demand for security improvements and/or for functional upgrades.
Also, there are cases where various pieces of software use mutually common programs. Also, there are cases where compatibility issues exist among multiple pieces of software.
If the installation or update of pieces of software brings an incompatible combination of the pieces of software, there may be cases where the pieces of software exhibit unstable behavior or do not operate. Also, there may be cases where the pieces of software exhibit unstable behavior or do not operate due to an order of installation of the pieces of software including update programs.
For example, a package manager of software packages describes dependency relationships between pieces of software or the library. Such a package manager can identify, for example, software packages that cannot be installed or updated at the same time; hence, installation or update of these packages can be avoided.
However, the dependency relationships described in the package manager for the pieces of software are explicitly described by creators of the packages. Therefore, for example, dependency relationships or compatibility issues across multiple versions that are not recognized by the creators are not explicitly described.
Therefore, even if the package manager exists, update of multiple pieces of software may result in, for example, an incompatible combination of the pieces of software, which degrades performance or stops operation of a system.
In recent years, a considerable number of pieces of software exist on a physical machine or a virtual machine, and it is often the case that multiple update programs are installed in order when executing updates. In this case, depending on the order of the installation of the multiple update programs, the machine goes through a huge number of states. If different orders of installations are taken for the update programs, the machine goes through different paths of the installation states. In this case, if the order of the update programs is inappropriate, it is possible for the machine to fall into a very unstable state during the update. In this case, the machine may hang up in the unstable state, and the update of the series of pieces of software may not be continued any more.
If the update ends unsuccessfully during the course of the update of the series of pieces of software in this way, services of the machine stop. And it is often the case that a considerable amount of work has to be done for solving the failure.
Conventionally, there is a method of planning an execution order of jobs (processes) using a table that describes compatibility values among the jobs in a process management support system (see, for example, Patent Document 1). The method includes a grouping section to divide multiple jobs into groups based on job data for identifying jobs; an affinity representation table storage section to store an affinity representation table that includes numerical values to indicate degrees of affinity among a predetermined number of groups; an affinity comparison section to compare affinity among the groups in which the multiple jobs are included, based on the affinity representation table; and a process planning section to determine an execution order of the multiple jobs so that a job is followed by another job having a high degree of affinity with the preceding job based on the comparison result by the affinity comparison section.
However, a process handled in this process management support system is a process of physical jobs such as a color paint process, which are different from installation of pieces of software handled in the present invention. Also, this process management support system has an object to shorten change time between a process and its following process by examining compatibility between the two successive processes, which is fundamentally different from the present invention where an order is determined based on intermediate states during installation, an order in the past is taken into consideration, and a huge number of cases are enumerated that requires a different calculation method.
Also, a conventional technology exists that calculates stability of connections between parts including pieces of software (for example, Patent Document 2). The technology is used for proposing a combination of versions of software and hardware with which a highly stable configuration can be expected, for example, by considering compatibility between versions of the software and hardware in a storage system. The technology is not a technology for determining an installation order of pieces of software.
Also, a technology for checking hardware exists in which compatibility information of hardware components is taken into consideration (for example, Patent Document 3). This technology relates to the upgrade of a computer that can be ordered by a user with requests such as the upgrade or reproduction of a user's computer and the like, by searching for parts compatible with the model in a computer network where computers and mobile information terminals are connected, and determining whether the order is feasible. The technology is also not a technology for determining an installation order of pieces of software.